<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="../../resources/js-test.js"></script>
</head>
<body>
<div style="display: none">
    <form id=a>
        <input id=x>
        <input name=z>
    </form>
    <form name=z>
        <input id=x>
        <input name=z>
        <select>
            <option id=o>a</option>
            <option name=z>b</option>
            <option>c</option>
        </select>
    </form>
    <a href="http://c.example.org" id=c name=cc></a>
    <a href="http://d.example.org" name=z></a>
</div>
<script>

description("HTMLCollection.item() shouldn't fallback to namedItem().");

function runTests(collection, expectedElement) {
    shouldBe(collection + ".item(0)", expectedElement);
    shouldBe(collection + ".item('0')", expectedElement);
    shouldBe(collection + ".item('z')", expectedElement);
    shouldBe(collection + ".item(undefined)", expectedElement);
    shouldBe(collection + ".item(null)", expectedElement);
    shouldBe(collection + ".item({a: 'blah'})", expectedElement);
    shouldBe(collection + ".item(false)", expectedElement);
    shouldBe(collection + ".item(true)", collection + ".item(1)");
    shouldBe(collection + ".item(4294967297)", collection + ".item(1)");
    shouldBeNull(collection + ".item(10000)");
    shouldBeNull(collection + ".item(-1)");
}

runTests("document.forms", "document.getElementById('a')");
runTests("document.forms[0].elements", "document.getElementById('x')");
runTests("document.forms[1].elements[2].options", "document.getElementById('o')");
runTests("document.anchors", "document.getElementById('c')");

// document.all is an ugly mutant (i.e. not an HTMLCollection).

if ("all" in document) {
    shouldBe("document.all.item('z')[0]", "document.forms[0].elements.namedItem('z')");
    shouldBe("document.all.item('z')[1]", "document.forms.namedItem('z')");
    shouldBe("document.all.item('z')[2]", "document.forms.namedItem('z').elements.namedItem('z')");
}

</script>
</body>
</html>
